﻿using M6R小圆柱注液机.Data;
using OfficeOpenXml;
using System;
using System.Collections.Generic;
//using System.Control;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace M6R小圆柱注液机.TaskList
{
    class AlarmAcq
    {
        //DataTable alarmDataDt = new DataTable();


        /// <summary>
        /// 前面板点击了运行程序，这里执行对应行为 - - 开启线程
        /// </summary>
        public void StartAlarmAutoTask()
        {
            Task autoRunning = new Task(AutoRunningDoWork, TaskCreationOptions.LongRunning);
            autoRunning.Start();


        }

        ///// <summary>
        ///// 初始化
        ///// </summary>
        //public void Init()
        //{

        //}




        /// <summary>
        /// 自动运行线程
        /// </summary>
        private void AutoRunningDoWork()
        {
            GlobalValues.log_Helper.DispProcess("报警线程已开启 . . .", "Info", true);          

            //    bool bRet = false;
            //    bool running = false;
            while (GlobalValues.StatusVariable.status_AutoRunning)
            {
                //        //检测到变量的上升沿时进行触发，由0变为1时
                //short plcStartMsg = GlobalValues.njOmronPLC.ReadVariable<short>(GlobalValues.PLCVariableName.AlarmTrigger);
                //        bRet = (plcStartMsg == 1) ? true : false;
                //        if (bRet == true)
                //        {
                //            bool[] tempDataArray = new bool[900];
                //            List<bool> alarmData = new List<bool>();//读取PLC内存的值
                //            List<bool> alarmDataCone = new List<bool>();//用于与读取上来的值得list 进行比较的list
                //            List<bool> alarmCompare = new List<bool>();
                //            running = true;
                //            while (running)
                //            {
                //alarmData = GlobalValues.njOmronPLC.ReadVariable("D4500", 900);
                //                if (alarmData.Contains(true))
                //                {
                //                    //判断读取上来的值是否有true，有true则说明有报警
                //                    if (alarmDataCone.Count == 0)
                //                    {
                //                        alarmDataCone = alarmData;
                //                        //检索表查找，并写入数据库
                //                        //进行报警内容存储
                //                        for (int i = 0; i < alarmData.Count; i++)
                //                        {
                //                            if (alarmData[i] == true)
                //                            {
                //                                //得到报警序号，并根据报警序号将报警内容存储到数据库中
                //                                string[] alarmMsg = new string[alarmDataDt.Rows[i].ItemArray.Length];
                //                                for (int j = 0; j < alarmDataDt.Rows[i].ItemArray.Length; j++)
                //                                {
                //                                    alarmMsg[j] = alarmDataDt.Rows[i].ItemArray[j].ToString();
                //                                }
                //                                SaveAlarmData(alarmMsg);
                //                            }
                //                        }
                //                    }
                //                    else
                //                    {
                //                        if (alarmData.SequenceEqual(alarmDataCone))//比较两个List 内的值是否相同？
                //                        {
                //                            //如果两个list表的数据相同，则不作为
                //                        }
                //                        else
                //                        {
                //                            //如果不相同，则找到不同项的索引，检索表查找，并写入数据库
                //                            for (int i = 0; i < alarmData.Count; i++)
                //                            {
                //                                if (alarmData[i] == true && alarmDataCone[i] == false)
                //                                {
                //                                    alarmCompare.Add(true);
                //                                }
                //                                else
                //                                {
                //                                    alarmCompare.Add(false);
                //                                }
                //                            }
                //                            //检索表查找，并写入数据库
                //                            //进行报警内容存储
                //                            for (int i = 0; i < alarmCompare.Count; i++)
                //                            {
                //                                if (alarmCompare[i] == true)
                //                                {
                //                                    //得到报警序号，并根据报警序号将报警内容存储到数据库中
                //                                    string[] alarmMsg = new string[alarmDataDt.Rows[i].ItemArray.Length];
                //                                    for (int j = 0; j < alarmDataDt.Rows[i].ItemArray.Length; j++)
                //                                    {
                //                                        alarmMsg[j] = alarmDataDt.Rows[i].ItemArray[j].ToString();
                //                                    }
                //                                    SaveAlarmData(alarmMsg);
                //                                }
                //                            }
                //                            alarmDataCone = alarmData;//防止重复记录
                //                            alarmCompare.Clear();
                //                        }
                //                    }
                //                }
                //                else
                //                {
                //                    running = false;
                //                    alarmDataCone.Clear();
                //                }
                //                Thread.Sleep(500);
                //            }
                //        }
                Thread.Sleep(500);
            }         
        }



        //string[] colNames = { "报警序号", "类别", "等级", "PLC 名称 (读取)", "地址 (读取)", "内容" };

        //private void SaveAlarmData(string[] alarmMsg)
        //{
        //    List<string> alarmData = new List<string>();
        //    alarmData = new List<string>(alarmMsg);
        //    //把报警数据存储到数据库中
        //    alarmData.Insert(0, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        //    GlobalValues.mysql_Helper.InsertGluingSystemData("tbalarm_data", colNames, alarmData, GlobalValues.PathVariable.DataBasePath);
        //}
        //private DataTable ReadAlarmData()
        //{
        //    Dictionary<int, List<string>> alarmDataDic = new Dictionary<int, List<string>>();
        //    List<string> alarmDataList = new List<string>();
        //    var file = new FileInfo("ConfigurationData\\AlarmData.xlsx");
        //    DataTable dt = new DataTable();
        //    DataColumn col;
        //    DataRow row;

        //    for (int i = 0; i < colNames.Length; i++)
        //    {
        //        col = new DataColumn();
        //        col.DataType = System.Type.GetType("System.String");
        //        col.ColumnName = colNames[i];
        //        dt.Columns.Add(col);
        //    }
        //    using (var package = new ExcelPackage(file))
        //    {
        //        ExcelWorkbook workbook = package.Workbook;
        //        if (workbook != null)
        //        {
        //            if (workbook.Worksheets.Count > 0)
        //            {
        //                ExcelWorksheet worksheet = workbook.Worksheets.First();
        //                //获取行数
        //                int rows = worksheet.Dimension.End.Row;
        //                //获取列数
        //                int cols = worksheet.Dimension.End.Column;
        //                for (int i = 2; i < rows; i++)
        //                {
        //                    row = dt.NewRow();
        //                    for (int j = 1; j <= cols; j++)
        //                    {
        //                        row[j - 1] = worksheet.Cells[i, j].Value.ToString();
        //                    }
        //                    dt.Rows.Add(row);
        //                }
        //            }
        //        }
        //    }
        //    return dt;
        //}





    }
}
